package models;

import java.util.Date;
import utils.conexao.Entity;
import utils.conexao.Id;
import utils.enums.atividade.StatusAtividade;

/**
 *
 * @author AmauriBechtoldJunir/OliverKraemer/ThiagoLippelDeAraujo
 */
public class Atividade extends Entity implements Comparable<Atividade> {
    @Id
    private int id;
    
    private int CodigoProjeto;
    
    private String nome;
    private String categoria;
    private StatusAtividade status;
    private Date data_conclusao;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    public StatusAtividade getStatus() {
        return status;
    }

    public void setStatus(StatusAtividade status) {
        this.status = status;
        
        if ( status == StatusAtividade.CONCLUIDO ) {
            this.data_conclusao = new Date();
        } else {
            this.data_conclusao = null;
        }
    }

    @Override
    public int getId() {
        return this.id;
    }
    
    public Date getDataConclusao() {
        return this.data_conclusao;
    }

    public int getCodigoProjeto() {
        return CodigoProjeto;
    }

    public void setCodigoProjeto(int CodigoProjeto) {
        this.CodigoProjeto = CodigoProjeto;
    }

    @Override
    public int compareTo(Atividade o) {
        if ( getDataConclusao() == null && o.getDataConclusao() != null )
            return 1;
        
        if ( getDataConclusao() != null && o.getDataConclusao() == null )
            return -1;
        
        if ( getDataConclusao() == null && o.getDataConclusao() == null )
            return 0;
       
        if ( getDataConclusao().getTime() <= o.getDataConclusao().getTime() )
            return -1;
        
        return 1;
    }
}